\section{El script}

Como ayuda al usuario se proporciona junto con la
distribución de \texttt{Bench::Test} el script
\texttt{configcreate} que facilita al usuario la
escritura de los ficheros de con\-fi\-gu\-ra\-ción.

Se trata de un script sencillo en modo texto
que va solicitando al usuario, paso a paso,
todos los parámetros de configuración.

Véase un ejemplo de uso para el ejemplo
del cálculo del número $\pi$:

\begin{verbatim}
   $ ./pi 10000
   
   Time: 0.000468
   Number of intervals: 10000
   Calculated Pi: 3.141593
   
   $ configcreate
   
     PARAMETRO @TABLE:
   =======================================================
     Nombre del campo:  N
     Expresión regular: Number of intervals: (.*)\n
     Nombre del campo:  PI
     Expresión regular: Calculated Pi: (.*)\n
     Nombre del campo:  TIME
     Expresión regular: Time: (.*)\n
     Nombre del campo:  
   
     PARAMETRO @TESTS:
   =======================================================
     Nombre del test:  test01
     Parámetros:       100000
     Nombre del test:  test02
     Parámetros:       200000
     Nombre del test:  test03
     Parámetros:       500000
     Nombre del test:  test04
     Parámetros:       1000000
     Nombre del test:  
   
     PARAMETRO %EXPERIMENTS:
   =======================================================
     Nombre del experimento:  LOCAL   
     Base (1), Local (2), o Remote (3):  2
   
       OBJETO Bench::Test::Local
             WORKDIR: .
          EXECUTABLE: pi
             BASEDIR: JUL_08
          OUTPUTFILE: 
            PREAMBLE: 
           POSTAMBLE: 
   
     Nombre del experimento:  
   
     PARAMETRO @VISUAL:
   =======================================================
     Incluir el campo 'TEST' ? [S/n]: s 
     Incluir el campo 'NAME' ? [S/n]: s 
     Incluir el campo 'N' ? [S/n]: s
     Incluir el campo 'PI' ? [S/n]: s
     Incluir el campo 'TIME' ? [S/n]: s
   
     PARAMETRO @UNIQUE:
   =======================================================
     Incluir el campo 'N' ? [S/n]: s     
     Incluir el campo 'PI' ? [S/n]: s
     Incluir el campo 'TIME' ? [S/n]: n 
   
     PARAMETRO @SELECTED:
   =======================================================
     Incluir el experimento 'LOCAL' ? [S/n]: s
   
     PARAMETRO @OUTPUTFORMAT:
   =======================================================
     Formato XML? [S/n]:   s
     Formato HTML? [S/n]:  s
     Formato LaTeX? [S/n]: s
     Formato Text? [S/n]:  s

     SALIDA:
   =======================================================
     Nombre del fichero [maketest.conf]: mt.conf
\end{verbatim}

\section{Resultado}

El fichero generado tendría un aspecto como el siguiente:

\begin{verbatim}
   # ==========================================
   # Configuration file for Bench::Test
   # generated by 'configcreate'
   # ==========================================
   
   @TABLE = (
      'N' => 'Number of intervals: (.*)\n',
      'PI' => 'Calculated Pi: (.*)\n',
      'TIME' => 'Time: (.*)\n',
   );
   
   @TESTS = (
      'test01' => '100000',
      'test02' => '200000',
      'test03' => '500000',
      'test04' => '1000000',
   );
   
   %EXPERIMENTS = (
      'LOCAL'
         => Bench::Test::Local->new(
                  WORKDIR => '.',
               EXECUTABLE => 'pi',
                  BASEDIR => 'JUL_08',
               OUTPUTFILE => '',
            ),
   );
   
   @VISUAL = qw(TEST NAME N PI TIME);
   
   @UNIQUE = qw(N PI TIME);
   
   @SELECTED = qw(LOCAL);
   
   @OUTPUTFORMAT = (
      'xml' => 'output.xml',
      'html' => 'output.html',
      'latex' => 'output.tex',
      'text' => 'output.txt',
   );
   
   sub Bench::Test::Entry::is_OK {
      return 1;
   }   
\end{verbatim}

\section{Aclaraciones}

Cuando el script pregunta por arrays formados por pares
clave-valor (\texttt{@TABLE}, \texttt{@TESTS} y \texttt{\%EXPERIMENTS}),
entra en un bucle del que se puede salir dejando el valor
de la clave vacío.

Los objetos de las clases \texttt{Bench::Test::Local} y
\texttt{Bench::Test::Remote} pueden definir sus parámetros
\texttt{PREAMBLE} y \texttt{POSTAMBLE}. El script
pregunta al usuario por el nombre de la rutina asociada
y no por el contenido de ésta. Una vez generado el
fichero de configuración, estas rutinas deberán
ser escritas por el usuario, al igual que la rutina
de comprobación de validez \texttt{Bench::Test::Entry::is\_OK}.
